package org.ix.dynamicapis.presentation.condition;

import org.ix.dynamicapis.model.SelectCondition;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 接口业务系统查询条件
 *
 * @author 郗世豪（rarexixi@gmail.com）
 */
@Getter
@Setter
@ToString
public class ApiSystemSelectCondition extends SelectCondition {

    /**
     * 接口ID
     */
    private Integer id;

    /**
     * 接口ID列表
     */
    private Collection<Integer> idIn;

    /**
     * 排除的接口ID列表
     */
    private Collection<Integer> idNotIn;

    /**
     * 最小接口ID
     */
    private Integer idMin;

    /**
     * 最大接口ID
     */
    private Integer idMax;

    /**
     * 业务系统编码
     */
    private String systemCode;

    /**
     * 业务系统编码列表
     */
    private Collection<String> systemCodeIn;

    /**
     * 排除的业务系统编码列表
     */
    private Collection<String> systemCodeNotIn;

    /**
     * 业务系统编码不为空
     */
    private Boolean systemCodeIsNotEmpty;

    /**
     * 业务系统编码为空
     */
    private Boolean systemCodeIsEmpty;

    /**
     * 业务系统编码开始
     */
    private String systemCodeStartWith;

    /**
     * 业务系统编码结束
     */
    private String systemCodeEndWith;

    /**
     * 业务系统编码包含
     */
    private String systemCodeContains;

    /**
     * 业务系统名称
     */
    private String systemName;

    /**
     * 业务系统名称列表
     */
    private Collection<String> systemNameIn;

    /**
     * 排除的业务系统名称列表
     */
    private Collection<String> systemNameNotIn;

    /**
     * 业务系统名称不为空
     */
    private Boolean systemNameIsNotEmpty;

    /**
     * 业务系统名称为空
     */
    private Boolean systemNameIsEmpty;

    /**
     * 业务系统名称开始
     */
    private String systemNameStartWith;

    /**
     * 业务系统名称结束
     */
    private String systemNameEndWith;

    /**
     * 业务系统名称包含
     */
    private String systemNameContains;

    /**
     * 接口基础路径
     */
    private String baseUrl;

    /**
     * 接口基础路径列表
     */
    private Collection<String> baseUrlIn;

    /**
     * 排除的接口基础路径列表
     */
    private Collection<String> baseUrlNotIn;

    /**
     * 接口基础路径不为空
     */
    private Boolean baseUrlIsNotEmpty;

    /**
     * 接口基础路径为空
     */
    private Boolean baseUrlIsEmpty;

    /**
     * 接口基础路径开始
     */
    private String baseUrlStartWith;

    /**
     * 接口基础路径结束
     */
    private String baseUrlEndWith;

    /**
     * 接口基础路径包含
     */
    private String baseUrlContains;

    /**
     * 接口刷新路径
     */
    private String refreshUrl;

    /**
     * 接口刷新路径列表
     */
    private Collection<String> refreshUrlIn;

    /**
     * 排除的接口刷新路径列表
     */
    private Collection<String> refreshUrlNotIn;

    /**
     * 接口刷新路径不为空
     */
    private Boolean refreshUrlIsNotEmpty;

    /**
     * 接口刷新路径为空
     */
    private Boolean refreshUrlIsEmpty;

    /**
     * 接口刷新路径开始
     */
    private String refreshUrlStartWith;

    /**
     * 接口刷新路径结束
     */
    private String refreshUrlEndWith;

    /**
     * 接口刷新路径包含
     */
    private String refreshUrlContains;

    /**
     * 扩展信息
     */
    private String extInfo;

    /**
     * 扩展信息列表
     */
    private Collection<String> extInfoIn;

    /**
     * 排除的扩展信息列表
     */
    private Collection<String> extInfoNotIn;

    /**
     * 扩展信息不为空
     */
    private Boolean extInfoIsNotEmpty;

    /**
     * 扩展信息为空
     */
    private Boolean extInfoIsEmpty;

    /**
     * 扩展信息开始
     */
    private String extInfoStartWith;

    /**
     * 扩展信息结束
     */
    private String extInfoEndWith;

    /**
     * 扩展信息包含
     */
    private String extInfoContains;

    /**
     * 是否删除(0否, 1是)
     */
    private Integer deleted;

    /**
     * 创建人
     */
    private String createUser;

    /**
     * 创建人列表
     */
    private Collection<String> createUserIn;

    /**
     * 排除的创建人列表
     */
    private Collection<String> createUserNotIn;

    /**
     * 创建人不为空
     */
    private Boolean createUserIsNotEmpty;

    /**
     * 创建人为空
     */
    private Boolean createUserIsEmpty;

    /**
     * 创建人开始
     */
    private String createUserStartWith;

    /**
     * 创建人结束
     */
    private String createUserEndWith;

    /**
     * 创建人包含
     */
    private String createUserContains;

    /**
     * 修改人
     */
    private String updateUser;

    /**
     * 修改人列表
     */
    private Collection<String> updateUserIn;

    /**
     * 排除的修改人列表
     */
    private Collection<String> updateUserNotIn;

    /**
     * 修改人不为空
     */
    private Boolean updateUserIsNotEmpty;

    /**
     * 修改人为空
     */
    private Boolean updateUserIsEmpty;

    /**
     * 修改人开始
     */
    private String updateUserStartWith;

    /**
     * 修改人结束
     */
    private String updateUserEndWith;

    /**
     * 修改人包含
     */
    private String updateUserContains;

    /**
     * 最小创建时间
     */
    private LocalDateTime createTimeMin;

    /**
     * 最大创建时间
     */
    private LocalDateTime createTimeMax;

    /**
     * 最小更新时间
     */
    private LocalDateTime updateTimeMin;

    /**
     * 最大更新时间
     */
    private LocalDateTime updateTimeMax;
}
